package cn.cheneyjoo.sqlsession;

import java.util.List;

public interface SqlSession {
    /**
     * 查询所有
     * @param statementId SQL语句唯一ID
     * @param params SQL语句参数
     * @return 查询对象集合
     * @param <E> 泛型对象
     */
    public <E> List<E> selectList(String statementId,Object... params) throws Exception;

    /**
     * 查询唯一指定对象
     * @param statementId SQL语句唯一ID
     * @param params SQL语句参数
     * @return 查询唯一对象
     * @param <T> 泛型对象
     */
    public <T> T selectOne(String statementId,Object... params) throws Exception;

    /**
     * 新增数据
     * @param statementId SQL语句唯一ID
     * @param params SQL语句参数
     * @return 是否成功
     * @throws Exception
     */
    public int insert(String statementId,Object... params) throws Exception;

    /**
     * 修改数据
     * @param statementId SQL语句唯一ID
     * @param params SQL语句参数
     * @return 是否成功
     * @throws Exception
     */
    public int update(String statementId,Object... params) throws Exception;

    /**
     * 删除数据
     * @param statementId SQL语句唯一ID
     * @param params SQL语句参数
     * @return 是否成功
     * @throws Exception
     */
    public int delete(String statementId,Object... params) throws Exception;

    /**
     * 动态代理
     * @param mapperClass
     * @return
     * @param <T>
     */
    public <T> T getMapper(Class<?> mapperClass);
}
